
package com.insigma.business.qrcode.merchant.dao;

import com.insigma.business.qrcode.soldier.entity.DataStatsCDO;
import com.insigma.business.qrcode.welfare.dto.CareWelfareMerchantBO;
import com.insigma.business.qrcode.merchant.dto.search.CareWelfareMerchantInfoBSearcher;
import com.insigma.business.qrcode.merchant.entity.CareWelfareMerchantInfoDO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;


public interface CareWelfareMerchantInfoDao {

    
    List<CareWelfareMerchantInfoDO> search(final CareWelfareMerchantInfoBSearcher innerSearcher);

    
    CareWelfareMerchantInfoDO get(final String id);

    
    Integer insert(final CareWelfareMerchantInfoDO careWelfareMerchantInfoDO);

    
    Integer update(final CareWelfareMerchantInfoDO careWelfareMerchantInfoDO);

    
    Integer delete(@Param("id") final String id,
                   @Param("modifierType") final String modifierType,
                   @Param("modifierId") final String modifierId);

    
    List<CareWelfareMerchantBO> searchMerchantInfo(CareWelfareMerchantInfoBSearcher searcher);


    
    List<CareWelfareMerchantBO> searchAllMerchantInfo(CareWelfareMerchantInfoBSearcher searcher);

    
    CareWelfareMerchantInfoDO getByMerchantQrString(String qrString);

    
    int countMerchant(CareWelfareMerchantInfoBSearcher searcher);

    
    int countMerchantScreen(String areaLike);

    
    List<DataStatsCDO> countMerchantType();

    List<DataStatsCDO> countMerchantTypeTraffic();

    List<DataStatsCDO> countMerchantTopTraffic();

    int countMerchantTraffic();

    List<DataStatsCDO> queryHzAreaMerchantDetail(@Param("beginDate")Date beginDate, @Param("endDate")Date endDate, @Param("show")Boolean show);

    String getMaxCode(String code);

    List<CareWelfareMerchantInfoDO> listByStreetId(String streetId);

    CareWelfareMerchantInfoDO getByEntryId(String entryId);

    Integer countByAreaAndDate(@Param("adminAreaCode")String adminAreaCode, @Param("startDate")Date startDate,@Param("endDate") Date endDate);

    List<DataStatsCDO> countMerchantTypeAndArea(String adminAreaCode);

    List<DataStatsCDO> countMerchantTopTrafficByArea(String adminAreaCode);

    List<String> listAllPublishedMerchantId();

    List<DataStatsCDO> groupScanRecord(String adminAreaCode);

    CareWelfareMerchantInfoDO getByUscc(String uscc);

    int publishList( @Param("idList") List<String> idList, @Param("published") Boolean published);

    int reApply(@Param("id") String id,@Param("outStatusRemark") String outStatusRemark);

    List<CareWelfareMerchantInfoDO> getByOuterSysId(@Param("outerSysAccountId") String outerSysAccountId);

}
